Long functions splitted.
[f432xdd.git] / java / Graph Editor / src / interfaces / GraphFrame.java
blob5442e66a6e5bbd1a2a361be5fb0dfa4ecd2b6550
1 package interfaces;
3 import models.*;
4 import controllers.SelectionController;
5 import controllers.actions.*;
6 import java.awt.Event;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9 import java.awt.event.KeyEvent;
10 import java.io.File;
12 import javax.swing.*;
13 import javax.swing.undo.*;
16 public class GraphFrame extends JFrame {
17 private static final long serialVersionUID = -7929100929760152271L;
18 private GraphPanel panel;
19 private UndoManager undoManager;
21 private JMenuBar menubar;
22 private JMenu menuOptionFile;
23 private JMenu menuOptionEdit;
25 private JMenuItem menuOptionFileClose;
26 private JMenuItem menuOptionFileOpen;
27 private SelectionController selectionController;
28 private ActionListener onMenuFileClose;
29 private ActionListener onMenuFileOpen;
31 private JMenuItem menuOptionEditUndo;
32 private JMenuItem menuOptionsEditRedo;
33 private JMenuItem menuOptionEditAddNode;
34 private JMenuItem menuOptionEditAddEdge;
35 private JMenuItem menuOptionEditRemoveNode;
36 private JMenuItem menuOptionFileSave;
38 private ActionListener onMenuFileSave;
39 private ActionListener onMenuEditUndo;
40 private ActionListener onMenuEditRedo;
41 private ActionListener onMenuEditAddNode;
42 private ActionListener onMenuEditAddEdge;
43 private ActionListener onMenuEditDeleteNode;
45 public GraphFrame(GraphModel model){
46 undoManager = new UndoManager();
47 this.setTitle("Graph Editor");
48 this.setSize(500, 500);
49 menubar = new JMenuBar();
50 this.setFocusable(true);
52 menuOptionFile = new JMenu("File");
53 menuOptionFile.setMnemonic(KeyEvent.VK_F);
54 menuOptionEdit = new JMenu("Edit");
55 menuOptionEdit.setMnemonic(KeyEvent.VK_E);
57 menuOptionFileClose = new JMenuItem("Close program",KeyEvent.VK_C);
58 menuOptionFileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, Event.CTRL_MASK));
60 menuOptionFileOpen = new JMenuItem("Openen",KeyEvent.VK_O);
61 menuOptionFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
63 menuOptionEditUndo = new JMenuItem("Ongedaan maken",KeyEvent.VK_Z);
64 menuOptionEditUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, Event.CTRL_MASK));
66 menuOptionEditAddNode = new JMenuItem("Knoop toevoegen",KeyEvent.VK_N);
67 menuOptionEditAddNode.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK));
69 menuOptionEditAddEdge = new JMenuItem("Kant toevoegen",KeyEvent.VK_M);
70 menuOptionEditAddEdge.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, Event.CTRL_MASK));
72 menuOptionEditRemoveNode = new JMenuItem("Delete Node",KeyEvent.VK_D);
73 menuOptionEditRemoveNode.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,Event.SHIFT_MASK));
75 menuOptionsEditRedo = new JMenuItem("Herhalen",KeyEvent.VK_R);
76 menuOptionsEditRedo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,Event.CTRL_MASK));
78 menuOptionFileSave = new JMenuItem("Opslaan",KeyEvent.VK_S);
79 menuOptionFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK));
81 onMenuFileSave = new ActionListener(){
82 public void actionPerformed(ActionEvent arg0) {
83 saveFile();
88 onMenuFileClose = new ActionListener(){
89 public void actionPerformed(ActionEvent arg0) {
90 System.exit(0); // TODO Werkt niet goed?
93 onMenuFileOpen = new ActionListener(){
94 public void actionPerformed(ActionEvent arg0) {
95 openFile();
98 onMenuEditUndo = new ActionListener(){
99 public void actionPerformed(ActionEvent arg0) {
100 undoManager.undo();
103 onMenuEditAddNode = new ActionListener(){
104 public void actionPerformed(ActionEvent arg0) {
105 GraphFrame.this.undoManager.addEdit(new AddNode(GraphFrame.this.selectionController));
108 onMenuEditAddEdge = new ActionListener(){
109 public void actionPerformed(ActionEvent arg0) {
110 selectionController.doAddEdge();
114 onMenuEditDeleteNode = new ActionListener(){
115 public void actionPerformed(ActionEvent arg0){
116 undoManager.addEdit(new DeleteNode(selectionController));
119 onMenuEditRedo = new ActionListener(){
120 public void actionPerformed(ActionEvent arg0){
121 undoManager.redo();
125 menuOptionFileClose.addActionListener(onMenuFileClose);
126 menuOptionEditAddNode.addActionListener(onMenuEditAddNode);
127 menuOptionEditAddEdge.addActionListener(onMenuEditAddEdge);
128 menuOptionEditUndo.addActionListener(onMenuEditUndo);
129 menuOptionFileOpen.addActionListener(onMenuFileOpen);
130 menuOptionEditRemoveNode.addActionListener(onMenuEditDeleteNode);
131 menuOptionsEditRedo.addActionListener(onMenuEditRedo);
132 menuOptionFileSave.addActionListener(onMenuFileSave);
134 menuOptionFile.add(menuOptionFileOpen);
135 menuOptionFile.add(menuOptionFileSave);
136 menuOptionFile.addSeparator();
137 menuOptionFile.add(menuOptionFileClose);
139 menuOptionEdit.add(menuOptionEditAddNode);
140 menuOptionEdit.add(menuOptionEditAddEdge);
141 menuOptionEdit.addSeparator();
142 menuOptionEdit.add(menuOptionEditUndo);
143 menuOptionEdit.add(menuOptionsEditRedo);
144 menuOptionEdit.add(menuOptionEditRemoveNode);
146 menubar.add(menuOptionFile);
147 menubar.add(menuOptionEdit);
148 setJMenuBar(menubar);
150 panel = new GraphPanel(model);
151 add(panel);
152 setVisible(true);
156 protected void openFile()
158 final JFileChooser fc = new JFileChooser();
159 int returnVal = fc.showOpenDialog(this);
160 if(returnVal == JFileChooser.APPROVE_OPTION){
161 doOpenFile(fc.getSelectedFile());
166 private void doOpenFile(File f) {
167 try {
168 GraphModel model = GraphModel.fromFile(f);
169 panel.setModel(model);
170 } catch (Exception e) {
171 JOptionPane
172 .showMessageDialog(
173 this,
174 "An error occured trying to read the input file. \r\n" + e
175 .getMessage(), "Error",
176 JOptionPane.ERROR_MESSAGE);
180 protected void saveFile()
182 final JFileChooser fc = new JFileChooser();
183 int returnVal = fc.showSaveDialog(this);
184 if(returnVal == JFileChooser.APPROVE_OPTION){
185 File file = fc.getSelectedFile();
186 try{
187 panel.getModel().writeToFile(file);
188 }catch(Exception e){
189 JOptionPane.showMessageDialog(this, (String)("An error occured trying to save the current state to a file. \r\n" + e.getMessage()) , "Error",JOptionPane.ERROR_MESSAGE );
194 public void addAction(UndoableEdit action){
195 this.undoManager.addEdit(action);
198 public void selectedObject(boolean selected) {
199 menuOptionEditAddEdge.setEnabled(selected);
200 menuOptionEditRemoveNode.setEnabled(selected);
202 public void setSelectionController(SelectionController s) {
203 selectionController = s;
204 this.getPanel().setSelectionController(s);
206 public GraphPanel getPanel()
208 return panel;